package com.yuexiao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuexiao.entity.DishDto;
import com.yuexiao.pojo.Dish;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuexiao.pojo.SetmealDish;

import java.util.List;

/**
* @author Administrator
* @description 针对表【dish(菜品管理)】的数据库操作Service
* @createDate 2022-08-10 14:10:57
*/
public interface DishService extends IService<Dish> {

    /**
     * 根据条件分页查询菜品列表
     * @param page int 当前页
     * @param pageSize int 每页显示条数
     * @param name String 菜品名称
     * @return Page mybatisplus自带的分页对象
     */
    Page getDishByPage(int page,int pageSize,String name);


    /**
     * 插入菜品数据以及菜品描述
     * @param dishDto DishDTO 封装的菜品实体类
     * @return  boolean true or false
     */
    boolean insertWithFlovor(DishDto dishDto);


    /**
     * 根据菜品id查询菜品详情
     * @param id Long 主键id
     * @return DishDto 封装的菜品实体类
     */
    DishDto getDishById(Long id);


    /**
     * 更新菜品数据
     * @param dishDto DishDTO 封装的菜品实体类
     * @return boolean true or false
     */
    boolean updateDish(DishDto dishDto);


    /**
     * 修改菜品上架状态
     * @param status int 要修改的状态
     * @param ids Longp[] 主键数组
     * @return boolean true or false
     */
    boolean updatedDishStatusByIds(int status,Long[] ids);


    /**
     * 根据id数组删除菜品数据
     * @param ids Longp[] 主键数组
     * @return boolean true or false
     */
    boolean deleteDishByIds(Long[] ids);


    /**
     * 根据分类id查询菜品列表
     * @param id Long 分类id
     * @return List<Dish> 菜品列表
     */
    List<Dish> getDishListByCategoryId(Long id);


    /**
     * 根据菜品名模糊查询菜品列表
     * @param name String 菜品名称
     * @return List<Dish> 菜品列表
     */
    List<Dish> getDishListByName(String name);


    /**
     * 根据分类id查询已上架的菜品
     * @param cid Long 分类id
     * @param status int 菜品状态
     * @return List<DishDto> 菜品列表
     */
    List<DishDto> getDishListByCategoryId(Long cid,int status);


    /**
     * 根据套餐id查询菜品
     * @param sid Long 套餐ID
     * @return List<DishDto> 菜品列表
     */
    List<DishDto> getDishListBySetmealId(Long sid);

}
